home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Ultimate Add-On's (Tournament Edition)
/
Cybercore Publishing - Ultimate Add-on's Tournament Edition.iso
/
tools
/
dforces
/
waxed15.txt
< prev
next >
Wrap
Text File
|
1995-08-21
|
14KB
|
317 lines
WAXEDIT.TXT v. 1.5
_____________________________
Author:
TheRedDeth@aol.com -- me, Jonathan Wise
Thank yous:
Cmdr Krud@aol.com -- the one who got me into Dark Forces editing. He
gave me many of the editing ideas I've used and many of the
ones I will use in later versions. He is also my first beta-
tester. [NEW] I also need to thank him for a lot of help with
logics.
CarGoCo@aol.com -- did a lot of the programming and hacking of the WAX
files that made all this possible. He wrote WAXVIEW which is
included in this package. [NEW] Thanx for the help with
logics.
My Beta-Testers -- To write a program, it's gotta work, and you guys
tested it to make sure that it did. Lots of thanx to:
Cmdr Krud@aol.com
YODA DAGO@aol.com
MSuther876@aol.com
Driver9@aol.com
Tyderian@aol.com
Daron Stinnett and the rest of the DF crew -- without you guys, none
of this would have been possible. Thanx for a great game (and
hopefully many more).
yborckmans@abcomp.linex.com -- Yves provided the editor that all of us
love so much. And he has give us the format for a compressed
FME, something none of this would have been possible without.
[NEW] Yet another person who has helped with logics.
Everyone I forgot to mention -- Thanx for your help. Sorry I forgot
to mention ya'.
Copyright stuff:
+------------------------------------------------------------------------+
| Dark Forces is (c) LucasArts Entertainment Company |
| DOOM is (c) iD Software |
| |
| None of these have anything to do with these totally unofficial specs, |
| and shouldn't be bothered with them in any way. |
+------------------------------------------------------------------------+
I don't know why I mentioned DOOM in there. Actually because I copyed this
Copyright stuff directly out of Yves Borckmans DF_SPECS.DOC file.
Other important last minute stuff:
Feel free to distribute this stuff all you want, as long as it's in its
original packaging. No editing the exe's or this text file. If you want
source code (C++ only), e-mail me, you have my address. You can edit the
source code for your own use only. You cannot distribute the edited source
code without my persmission. So there.
WAX file structure:
typedef struct
{
int width; // width in pixels
int height; // height in pixels
int compression; // compression type
int size; // total size of compressed cell
dword *aOffsets; // column byte offset table
dword pad1;
byte data[]; // cell data stored in columns
} Cell;
typedef struct
{
fixed xShift; // x center point
fixed yShift; // y center point
int flip; // 0 = none, 1 = h, 2 = v
Cell *pCell; // offset to cell
fixed unitwidth; // cell width in feet
fixed unitheight; // cell height in feet
dword pad3;
dword pad4;
} Frame;
typedef struct
{
dword pad1;
dword pad2;
dword pad3;
dword pad4;
Frame *apFrame[32]; // Offsets to frames
} Seq;
typedef struct
{
fixed worldWidth; // real-world width in fixed point (16/16)
fixed worldHeight; // real-world height in fixed point (16/16)
int frameRate; // frames per second
dword nFrames; // number of frames in this wax
dword pad2;
dword pad3;
dword pad4;
Seq *apSeq[32]; // View table (Offsets)
} Wax;
typedef struct
{
fixed version; // File version control
int nSeqs; // Number of seqs
int nFrames; // Number of frames
int nCells; // Number of Cells
dword xScale; // x wax scale
dword yScale; // y wax scale
dword extraLight; // extra lighting
dword pad4;
Wax *apWax[32]; // Offset from file start to each wax
} WaxHeader;
This is fairly self explanatory (at least the comments are), but I'll go ahead
and explain it anyway.
note: padX = padding (always 0)
*whatever = pointer to whatever
WaxHeader:
xScale -- how the WAX gets bigger/smaller on the horizontal scale
yScale -- ditto, except on the vertical scale
extraLight -- how much light does the WAX give off
Wax:
worldWidth -- what it says
worldHeight -- ditto
Seq:
nothing important to explain here
Frame:
xShift -- movement of center to left or right
yShift -- movement of center up or down
flip -- Like the 3DO flip. [NEW] Very important, see section on it
unitWidth -- the width
unitHeight -- the height
Cell: //This is what we extract and put back in
width -- used to calculate size of Cell if compression == 0
height -- ditto
compression -- compression == 0 // not compressed
compression == 1 // compressed
size -- used to calculate size of Cell if compression == 1
data -- the picture
Hope you now have a thorough understanding of a WAX file structure.
What the programs do/don't do:
WAX2FME -- extracts multiple cells from a file
eats about 500K, but I think you can manage that if you're
able to play Dark Forces
FME2WAX -- takes your edited cells and puts them back in the WAX
requires that you have complete and unedited versions of
the WAX you are replacing in the directory of the program.
[NEW] You do NOT need to make back-ups of the files you
are replacing. FME2WAX 2.0 does it for you.
WAXTRACE -- this program traces through the WAX and shows you what the
values of stuff are. It's for you people who want to
create editors, not just edit.
WAXON -- views a WAX. While it may not be essential for editing, it
sure is helpful. Let me tell you, you don't want to edit
without it.
[NEW] WAXON is included this time.
How to create a WAX:
This, of course, is the reason you downloaded this program, so I guess I might
as well tell you how to use it.
VIEWING A WAX:
This is the easiest task. Just use WAX2FME to extract the Cells, then
run Yves's FMEVIEW with the new fmes (included with DFUSE).
[NEW] I'm not sure if you will be able to view your extracted FME's
with FMEVIEW because header1 is not included in the WAX and is thus
not included in extracted FME's.
CREATING A NEW WAX:
To do this, you will need CarGoCo's FMECAD. Use it to create a set of
new FME's to put in the WAX. This must be the same number of WAXES as
there are in the WAX you are replacing. Then you can use FME2WAX to
create a brand spankin' new WAX.
EDITING A WAX:
To edit a WAX, use WAX2FME on the WAX. Then use FMECAD to edit the
resulting FME's. You can use FME2WAX to put the new FME's back into
a WAX. You can only edit the uncompressed FME's inside the WAX, as
there is no editor available to edit compressed FME's right now.
[NEW] because of reasons listed above, you can't edit until we know
more about header1 of FME's.
[NEW] Flip:
Now that you know how to edit a WAX, I think it's a good time to bring
up Flip. If you examine the file structue, you'll notice that there is
a flip variable. This can be used make WAX editing simpler and faster
-- but only if you know how to use it. It will seem a little
complicated at first, but it's worth it in the long term. If you've
done any 3DO editing, I believe it is similar (although I haven't done
any 3D0 editing myself). Let me try and explain...
If you view STORMFIN.WAX (it's best to CarGoCo's waxview, but you can
extract it if you want), you'll notice all the pictures have the storm
trooper facing in the same direction (I think it's left). Now, if
you've played the game, you should notice that the Storm Trooper can
face left or right. LA used the flip variable to make it appear as
though the storm trooper is facing right. You can use this too, in
the same way.
I haven't really studied the flip variable much at all. I just know
it is there. I don't even know what any given value entails. In my
next version of WAXEDIT, I may include a flipping option inside
FME2WAX, but for now, we'll have to improvise. Since, by using
FME2WAX, we replace a complete version of the WAX, we know that the
flip value will remain intact (exactly as LA used it). So all we need
to do is make our new waxes shown from the views that the Storm
Trooper (or whatever) is shown.
It's really not all that difficult. If you didn't understand it or
are having trouble, reread it. If you're still having trouble, e-mail
me.
[NEW] A word on logics:
I'm not exactly the expert on this, so you might be better off talking
to someone else about the subject. Through a little bit of work on my
own, and a lot of help from friends, and a whole lot of listening to
other people talk about it, I have managed to piece together a little
bit about logics. I have to thank Cmdr Krud for really doing most of
the work for this section.
If there's one thing that really holds us still in WAX editing, it's
logics. Logics prevent us from doing a lot of stuff we would really
like to do. If only we could edit them...
Well, before we can edit them, we have to know what they are, and
that's a good portion of the problem. We're not quite sure how
they're stored, or where they're stored, or even how they're defined.
Let's work on the last one for now.
As it turns out, logics (or at least parts of them) are stored inside
the WAX's. This means that we can edit the logics to some degree
(though indirectly) through the WAX's. Flip is one example of this
(although it's not a very good one). I think that the xShift and
yShift variables are also examples, although I'm not quite sure right
now (testing is in progress). What I think these variables are are
definitions for how far an object can move in a single ray-trace. If
this is true, it means that we can change how fast an enemy is, among
other things.
Now that I've speculated about logics enough, let me speculate a
little more about what they are. It is possible that the above is not
actually part of the logic, but simply used by the logic. I'm going
to give a loose definition of logics, and let you decifer exactly what
they are.
As far as I can tell, logics seem to be the Artificial Intelligence
for the WAX's. I think that they also tell the game engine when to
load which frame of the wax, and when, and how far, to move the WAX
at any given time.
That was pretty complicated. Even more complicated than flip I
suppose. But, you don't need to read this again to edit WAX's. It's
just here to kind of "get you prepared" for the future of WAX editing.
If you formulate any opinions about WAX's, don't hesitate to send them
to me.
What you should expect in later versions:
WAX2FME may be reconfigured to eat less memory
FME2WAX may be rewritten so it doesn't have that mean requirement
WAXTRACE may display more info, and explain what the info means
WAXON it depends what CarGoCo wants to do with it
Expect expansion on the flip variable. It can save you a lot of
editing time, if you know how to use it.
In v. 2.0
You'll probably see a WAX<->BMP converter
Maybe an editor for compressed FME's
[NEW] LOTS of expansion on logics
In v. 3.0
I can't be certain, but I think you may get a full WAX editor which
doesn't require you to create huge files. Don't count on it for sure
though. This is a long time in the future, and what happens then,
depends on what happens now.
In v. 89.1136
A Dark Forces 4 editor.
Well, that's about it. Enjoy your editing experience, but bear in mind, you
can't edit compressed FME's until and editor for them comes out. But the most
important thing of all is: HAVE FUN!!!